package com.baijia.ticket;

import com.baijia.authentication.Authentication;
import com.baijia.authentication.principal.Service;

/**
 * @title ServiceTicket
 * @desc ST，创建TGT后发给client，用于授权给客户端来获取principal，一次性使用，有效期10s，取后直接删
 * @author caoliang
 * @date 2015年12月5日
 * @version 1.0
 */
public interface ServiceTicket extends Ticket {

    String PREFIX = "ST";

    /**
     * 取ST所授权的service
     * 
     * @return 选定service.
     */
    Service getService();

    /**
     * 是否ST和TGT同时创建
     * 
     * @return true if it is, false otherwise.
     */
    boolean isFromNewLogin();

    boolean isValidFor(Service service);

    /**
     * 授予一个service TGT
     * 
     * @param ticketid.
     * @param ticket校验通过后，认证信息
     * @return TGT
     */
    TicketGrantingTicket grantTicketGrantingTicket(String id,
        Authentication authentication);
}
